﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using WpfApplication2.UserControls;
using WpfApplication2.Helpers;
using WpfApplication2.SindicatoWebService;
using System.Windows.Input;
using WpfApplication2.Views.Usuario;
using WpfApplication2.Views;

namespace WpfApplication2.ViewModels.Usuario
{
    public class ConsultarUsuarioViewModel : ViewModel
    {
        #region properties

        public SindicatoWebService.Service1SoapClient WS;
        public Instancias Instancias { get; set; }
        public UsuarioDTO Usuario
        {
            get
            {
                return usuario;
            }
            set
            {
                if (usuario != value)
                {
                    usuario = value;
                    RaisePropertyChanged("Usuario");
                }
            }
        }
        private UsuarioDTO usuario;

        #endregion


        public ConsultarUsuarioViewModel(Instancias instancias, UsuarioDTO usuario)
        {
            WS = new SindicatoWebService.Service1SoapClient();
            Usuario = usuario;
            Instancias = instancias;
        }

        #region Editar Usuario

        private DelegateCommand editarUsuario;

        public ICommand EditarUsuario
        {
            get
            {
                if (editarUsuario == null)
                {
                    editarUsuario = new DelegateCommand(Editar, CanExecute);
                }
                return editarUsuario;
            }
        }

        private bool CanExecute()
        {
            return true;
        }

        private void Editar()
        {
            Instancias.FrameContent.Content = new EditarUsuario(Instancias, Usuario);
        }

        #endregion

        #region Eliminar Usuario

        private DelegateCommand eliminarUsuario;

        public ICommand EliminarUsuario
        {
            get
            {
                if (eliminarUsuario == null)
                {
                    eliminarUsuario = new DelegateCommand(Eliminar, CanExecute);
                }
                return eliminarUsuario;
            }
        }

        private void Eliminar()
        {
            var mensaje = String.Format("Esta seguro que desea eliminar al usuario: {0} {1}?", Usuario.Nombre.Trim(), Usuario.Apellido.Trim());
            var eliminar = Instancias.Confirmacion.ShowHandlerDialog(mensaje);
            if (eliminar)
            {
                WS.EliminarUsuario(Usuario.Id);
                Instancias.ModalDialog.ShowHandlerDialog("El usuario se ha eliminado correctamente.");
                Instancias.FrameContent.Content = new Home();
            }
        }
        #endregion
    }
}
